/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package restaurante.cdp;

import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.OneToOne;
import restaurante.cdp.enuns.SituacaoPedido;
import restaurante.cdp.enuns.TipoPedido;
import restaurante.cdp.interfaces.EnviadorPedido;
import restaurante.cdp.interfaces.Pedinte;
import restaurante.util.persistencia.ObjetoPersistente;

/**
 *
 * @author a20101bsi0623
 */

@Entity
public class Pedido extends ObjetoPersistente{
    private Pedinte cliente;
    private EnviadorPedido responsavel;
    private Produto produto;
    private TipoPedido tipo;
    private Integer tempoEspera;
    private Integer tempoElaboracao;
    private Integer tempoEntrega;
    private Integer quantidade;
    private Cozinheiro cozinheiro;
    private SituacaoPedido situacao;
    private Integer tempoCriacao;

    public Pedido() {
        this.tempoCriacao = Calendar.getInstance().get(Calendar.MINUTE);
        this.situacao = SituacaoPedido.PEDENTE;
    }

    
    public void setTempoCriacao(Integer tempoCriacao) {
        this.tempoCriacao = tempoCriacao;
    }


    public Pedinte getCliente() {
        return cliente;
    }

    public void setCliente(Pedinte cliente) {
        this.cliente = cliente;
    }

    public EnviadorPedido getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(EnviadorPedido responsavel) {
        this.responsavel = responsavel;
    }

    @OneToOne
    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    @Enumerated(EnumType.STRING)
    public TipoPedido getTipo() {
        return tipo;
    }

    public void setTipo(TipoPedido tipo) {
        this.tipo = tipo;
    }

    public Integer getTempoEspera() {
        return tempoEspera;
    }

    public void setTempoEspera(Integer tempoEspera) {
        this.tempoEspera = tempoEspera;
    }

    public Integer getTempoElaboracao() {
        return tempoElaboracao;
    }

    public void setTempoElaboracao(Integer tempoElaboracao) {
        this.tempoElaboracao = tempoElaboracao;
    }

    public Integer getTempoEntrega() {
        return tempoEntrega;
    }

    public void setTempoEntrega(Integer tempoEntrega) {
        this.tempoEntrega = tempoEntrega;
    }

    public Integer getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(Integer quantidade) {
        this.quantidade = quantidade;
    }

    @OneToOne
    public Cozinheiro getCozinheiro() {
        return cozinheiro;
    }

    public void setCozinheiro(Cozinheiro cozinheiro) {
        this.cozinheiro = cozinheiro;
    }

    @Enumerated(EnumType.STRING)
    public SituacaoPedido getSituacao() {
        return situacao;
    }

    public void setSituacao(SituacaoPedido situacao) {
        this.situacao = situacao;
    }
    
    public void consultaPedido()
    {
        System.out.println("\n--Pedido--");
        System.out.println(">Situacao: "+this.getSituacao());
        System.out.println(">Tempo Espera: "+this.getTempoEspera());
        System.out.println(">Tempo Elaboracao: "+this.getTempoElaboracao());
        System.out.println(">Tempo Entrega: "+this.getTempoEntrega());
        System.out.print(">Responsavel Pedido: ");
        this.responsavel.consulta();
        System.out.print("\n>Cliente Pedido:");
        this.getCliente().consultaCliente();
        
        
        
    }
    public void calcTempoEspera()
    {
        int e, t;
        t = Calendar.getInstance().get(Calendar.MINUTE);
        if(t >= tempoCriacao){
            e =  t - tempoCriacao;
        }
        else{
            e = (tempoCriacao + 60) - t;
        }
        tempoEspera = e; 
    }
    
    public void calcTempoElaboracao()
    {
        int e, t;
        t = Calendar.getInstance().get(Calendar.MINUTE);
        if(t >= tempoEspera){
            e =  t - tempoEspera - tempoCriacao;
        }
        else{
            e = t - tempoCriacao - tempoEspera  + 60;
        }
        tempoElaboracao = e;  
    }
    public void calcTempoEntrega()
    {
        int e, t;
        t = Calendar.getInstance().get(Calendar.MINUTE);
        if(t >= tempoElaboracao){
            e =  t - tempoElaboracao - tempoEspera - tempoCriacao;
        }
        else{
            e =  t - tempoElaboracao - tempoEspera - tempoCriacao + 60;
        }
        tempoEntrega = e;
    }
    

}
